
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
import pylab
pylab.rcParams['figure.figsize'] = (15.0, 7.0) # 调整显示大小
import datetime
from matplotlib.animation import ArtistAnimation

# fig, ax = plt.subplots()
x = np.linspace(-10*np.pi,10*np.pi,300)
y = np.linspace(-10*np.pi,10*np.pi,300)
X,Y = np.meshgrid(x,y)
nums = 100   #需要的帧数,这里要注意不要爆内存，另外大一点有利于显示完全函数的变换周期
imgs = []   #用于存储所有的img

fig = plt.figure()   #只需要一个图，不需要iter了

def make_z(step):
    z = np.cos((0.5*X*(np.cos(0.01*step)+0.1))+step)+np.sin(0.5*(Y*(np.sin(0.01*step)+0.1))+step)
    return z

for step in range(nums):
    img = make_z(step)
    im = plt.imshow(img, animated=True)
    imgs.append([im])   #这里将多个图像对象叠加在一起，imgs为列表对象

ani = ArtistAnimation(fig, imgs, interval=100, repeat_delay=100)
#设置每帧间隔iterval ms，以及播放完以后循环播放检测
plt.show()
